package com.car.service.mapper;

import com.car.service.entity.ChatSession;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 聊天会话Mapper接口
 */
@Mapper
public interface ChatSessionMapper {
    
    /**
     * 插入会话
     *
     * @param session 会话
     * @return 影响行数
     */
    int insert(ChatSession session);
    
    /**
     * 更新会话
     *
     * @param session 会话
     * @return 影响行数
     */
    int update(ChatSession session);
    
    /**
     * 根据ID查询会话
     *
     * @param id 会话ID
     * @return 会话
     */
    ChatSession selectById(String id);
    
    /**
     * 根据用户ID和客服ID查询会话
     *
     * @param userId 用户ID
     * @param serviceId 客服ID
     * @return 会话
     */
    ChatSession selectByUserIdAndServiceId(@Param("userId") Long userId, 
                                         @Param("serviceId") Long serviceId);
    
    /**
     * 根据用户ID查询会话列表
     *
     * @param userId 用户ID
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 会话列表
     */
    List<ChatSession> selectByUserId(@Param("userId") Long userId, 
                                   @Param("offset") int offset, 
                                   @Param("limit") int limit);
    
    /**
     * 根据客服ID查询会话列表
     *
     * @param serviceId 客服ID
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 会话列表
     */
    List<ChatSession> selectByServiceId(@Param("serviceId") Long serviceId, 
                                      @Param("offset") int offset, 
                                      @Param("limit") int limit);
    
    /**
     * 删除会话
     *
     * @param id 会话ID
     * @return 影响行数
     */
    int delete(String id);
} 